/**
 * @file literaturecard.h
 * описание класса для хранение данных о литературной карточке
 * @author Kazakov A.V.
 * @date 18.07.2012
 */

#if !defined(_LITERATURECARD_H)
#define _LITERATURECARD_H

#include <QString>
#include <QDate>

/** 
 * @class LiteratureCard
 * Представление данных о литературе для их обработки
 * @author Kazakov A.V.
 */
class LiteratureCard
{
private:
	/** уникальный номер из базы данных	*/
	int Id;
	/** название работы	*/
	QString Title;
	/**	авторы	*/
	QString	Author;
	/** имя файла(не полное)	*/
	QString FileName;
	/** дата добавления	*/
	QDate AddDate;
	/** дата публикации	*/
	QDate PublicDate;
	/** аннотация	*/
	QString	Annotation;
	/** область литературы	*/
	QString Sphere;
	/** подобласть	*/
	QString Field;
	/** источник - интернет, журнал, издательство	*/
	QString Source;
	/** путь к файлу	*/
	QString FilePath;
	/**	карточка изменена	*/
	bool IsChange;
	
public:
    /**  конструктор создания новой карточки	*/
	LiteratureCard()
	{
		Id = -1;
		IsChange = false;
        AddDate = QDate::currentDate();
        PublicDate = QDate::currentDate();
	}
    
    /**  для записи из базы данных	*/
    LiteratureCard( int         id,
                    QString     title,
                    QString     filename,
                    QDate       adddate,
                    QDate       publicdate,
                    QString     annotation,
                    QString     sphere,
                    QString     field,
                    QString     source,
                    QString     filepath)
        : Id(id), Title(title), FileName(filename), AddDate(adddate), 
        PublicDate(publicdate), Annotation(annotation), Sphere(sphere),
        Field(field), Source(source), FilePath(filepath)
    {
        IsChange = false;
    }

	/**	конструктор копирования		*/
	LiteratureCard(const LiteratureCard &card)
	{
		Id = card.Id;
		Title = card.Title;
		FileName = card.FileName;
		AddDate = card.AddDate;
		PublicDate = card.PublicDate;
		Annotation = card.Annotation;
		Sphere = card.Sphere;
		Field = card.Field;
		Source = card.Source;
		FilePath = card.FilePath;

		IsChange = card.IsChange;
	}
	
	virtual ~LiteratureCard()
	{
		//	удаление элементов
	}

public:
    /**
     * получить номер литературной карты
     * @return номер карты
     */
	int getID()
	{
		return	Id;
	}

	//	
    /**
     * получить название работы
     * @return название работы
     */
	QString getTitle()
	{
		return	Title;
	}

    /**
     * установить название работы
     * @param title название
     */
	void setTitle(QString title)
	{
		Title = title;
		IsChange = true;
	}

	//	
    /**
     * получить имя файла
     * @return имя файла
     */
	QString getFileName()
	{
		return	FileName;
	}

    /**
     * установить новое имя файла
     * @param fileName новое имя файла
     */
	void setFileName(QString fileName)
	{
		fileName = fileName;
		IsChange = true;
	}

	//	
    /**
     * получить дату добавления в БД
     * @return дата добавления
     */
	QDate getAddDate()
	{
		return	AddDate;
	}

    
	void setAddDate(QDate addDate)
	{
		addDate = addDate;
		IsChange = true;
	}

	//	
	QDate getPublicDate()
	{
		return	PublicDate;
	}
	void setPublicDate(QDate publicDate)
	{
		PublicDate = publicDate;
		IsChange = true;
	}

	//	
	QString getAnnotation()
	{
		return	Annotation;
	}
	void setAnnotation(QString annotation)
	{
		Annotation = annotation;
		IsChange = true;
	}

	//	
	QString getSphere()
	{
		return	Sphere;
	}
	void setSphere(QString sphere)
	{
		Sphere = sphere;
		IsChange = true;
	}

	//	
	QString getField()
	{
		return	Field;
	}
	void setField(QString field)
	{
		Field = field;
		IsChange = true;
	}

	//	
	QString getSource()
	{
		return	Source;
	}
	void setSource(QString source)
	{
		Source = source;
		IsChange = true;
	}

	QString getFilePath()
	{
		return	FilePath;
	}
	void setFilePath(QString filepath)
	{
		FilePath = filepath;
		IsChange = true;
	}

	//	
	QString getAuthor()
	{
		return	Author;
	}
	void setAuthor(QString author)
	{
		Author = author;
		IsChange = true;
	}

	//	
	bool isChange()
	{
		return	IsChange;
	}
};

#endif  //_LITERATURECARD_H
